﻿Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Word
Imports Chiroredactie2007.My.Resources

Public Class VervangMetOptiesVenster

    Private mZoekterm As String
    Private ReadOnly mOptie1 As String
    Private ReadOnly mOptie2 As String
    Private ReadOnly mOptie3 As String
    Private ReadOnly mUitleg As String
    Private ReadOnly mMetBegingrens As Boolean
    Private ReadOnly mMetEindgrens As Boolean

    Private ReadOnly verb As New Vervanging
    Private ReadOnly selectie As Selection = Globals.ThisAddIn.Application.Selection

    Public Sub New()
        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Dim instelForm As New InstellingenVervangMetOptiesVenster
        If instelForm.ShowDialog = DialogResult.OK Then
            mZoekterm = instelForm.ZoekwoordTextBox.Text
            mOptie1 = instelForm.Vervangwoord1TextBox.Text
            mOptie2 = instelForm.Vervangwoord2TextBox.Text
            mOptie3 = instelForm.Vervangwoord3TextBox.Text
            mUitleg = String.Empty

            VensterInitialiseren()
        End If
    End Sub

    Public Sub New(ByVal ZoektermParam As String, ByVal OptieParam1 As String, ByVal OptieParam2 As String, _
                    ByVal OptieParam3 As String, Optional ByVal UitlegParam As String = "", _
                    Optional ByVal MetBegingrensParam As Boolean = False, Optional ByVal MetEindgrensParam As Boolean = False)
        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        mZoekterm = ZoektermParam
        mOptie1 = OptieParam1
        mOptie2 = OptieParam2
        mOptie3 = OptieParam3
        mUitleg = UitlegParam
        mMetBegingrens = MetBegingrensParam
        mMetEindgrens = MetEindgrensParam

        VensterInitialiseren()
    End Sub

    Public Sub VervangingenUitvoeren()
        Dim result As DialogResult

        verb.OpmaakVervangingResetten()

        If mMetBegingrens AndAlso mMetEindgrens Then
            selectie.Find.MatchWholeWord = True
        End If

        If mMetBegingrens Then
            mZoekterm = "<" & mZoekterm
            selectie.Find.MatchWildcards = True
        End If
        If mMetEindgrens Then
            mZoekterm = mZoekterm & ">"
            selectie.Find.MatchWildcards = True
        End If

        With selectie.Find
            .Text = mZoekterm
            .Forward = True
            .Execute()
        End With

        Do While selectie.Find.Found = True
            result = ShowDialog()

            If result = DialogResult.OK Then
                If CustomOptieRadioButton.Checked = True Then
                    verb.SelectieVervangen(CustomVervangingTextBox.Text)
                    CustomVervangingTextBox.Text = String.Empty
                    selectie.MoveRight(Unit:=WdUnits.wdWord, Count:=1)
                ElseIf Optie1RadioButton.Checked = True Then
                    verb.SelectieVervangen(Optie1RadioButton.Text)
                    selectie.MoveRight(Unit:=WdUnits.wdWord, Count:=1)
                ElseIf Optie2RadioButton.Checked = True Then
                    verb.SelectieVervangen(Optie2RadioButton.Text)
                    selectie.MoveRight(Unit:=WdUnits.wdWord, Count:=1)
                ElseIf Optie3RadioButton.Checked = True Then
                    verb.SelectieVervangen(Optie3RadioButton.Text)
                    selectie.MoveRight(Unit:=WdUnits.wdWord, Count:=1)
                Else
                    MessageBox.Show("Je hebt geen keuze gemaakt.", FoutString, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
                    selectie.MoveLeft(Unit:=WdUnits.wdWord, Count:=1)
                End If
            ElseIf result = DialogResult.Ignore Then
                selectie.MoveRight(Unit:=WdUnits.wdWord, Count:=1)
            ElseIf result = DialogResult.Abort Then
                Exit Sub
            End If
            selectie.Find.Execute()
        Loop
    End Sub

#Region " private helper methods "

    Private Sub VensterInitialiseren()
        ' Vul keuzemogelijkheden in
        If mOptie1 = String.Empty Then
            Optie1RadioButton.Visible = False
        Else
            With Optie1RadioButton
                .Visible = True
                .Text = mOptie1
            End With
        End If

        If mOptie2 = String.Empty Then
            Optie2RadioButton.Visible = False
        Else
            With Optie2RadioButton
                .Visible = True
                .Text = mOptie2
            End With
        End If

        If mOptie3 = String.Empty Then
            Optie3RadioButton.Visible = False
        Else
            With Optie3RadioButton
                .Visible = True
                .Text = mOptie3
            End With
        End If

        ' Als 2 en 3 leeg zijn, moet de eerste optie geselecteerd zijn
        If mOptie2 = String.Empty AndAlso mOptie3 = String.Empty Then
            Optie1RadioButton.Checked = True
        End If

        ' Als er uitleg ingevuld is, moet het icoontje zichtbaar zijn
        If mUitleg = String.Empty Then
            uitlegPictureBox.Visible = False
        Else
            uitlegPictureBox.Visible = True
        End If
        uitlegToolTip.SetToolTip(uitlegPictureBox, Trim(mUitleg))

        ' Pas de titel van het formulier aan
        Text = String.Format("Vervang '{0}'", mZoekterm)
    End Sub

    Private Sub CustomVervangingTextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs) _
     Handles CustomVervangingTextBox.TextChanged
        If CustomVervangingTextBox.Text <> String.Empty Then
            CustomOptieRadioButton.Checked = True
        End If
    End Sub

    Private Sub CustomOptieRadioButton_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) _
     Handles CustomOptieRadioButton.CheckedChanged
        If CustomOptieRadioButton.Checked = False Then
            CustomVervangingTextBox.Text = String.Empty
        End If
    End Sub

    Private Sub StopButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StopButton.Click
        Exit Sub
    End Sub

#End Region

End Class